package com.m3839.sdk.common.http;

import com.m3839.sdk.common.http.listener.OnHttpRequestListener;

import org.json.JSONObject;

import java.util.Map;

/**
 * @author ChenBaoyang
 * @description: IHttpManager
 * @date 2021/10/29 17:10
 */
public abstract class IHttpManager {


    protected static final String REQ_PROPERTY_CONNECTION = "Connection";
    protected static final String REQ_VALUE_CONNECTION = "Keep-Alive";

    /**
     * http请求方法 - GET
     */
    protected static final String HTTP_METHOD_GET = "GET";

    /**
     * http请求方法 - POST
     */
    protected static final String HTTP_METHOD_POST = "POST";

    /**
     * utf-8字符集
     */
    protected static final String CHARSET_UTF8 = "UTF-8";

    /**
     * 连接超时时间，7秒
     */
    protected static final int CONNECT_TIMEOUT = 7 * 1000;

    /**
     * 读取超时时间
     */
    protected static final int READ_TIMEOUT = 7 * 1000;

    /**
     * get网络请求
     *
     * @param baseUrl 请求地址
     * @param params 请求参数
     * @param listener 请求结果监听
     */
    public abstract void requestGet(String baseUrl,
                                    Map<String, Object> params,
                                    OnHttpRequestListener listener);
    /**
     * get网络请求
     *
     * @param baseUrl 请求地址
     * @param params 请求参数
     * @param headers 头部信息串
     * @param listener 请求结果监听
     */
    public abstract void requestGet(String baseUrl,
                                  Map<String, Object> params, Map<String, String> headers,
                                  OnHttpRequestListener listener);

    /**
     * POST请求
     *
     * @param baseUrl 请求地址
     * @param params 请求参数
     * @param listener 请求结果监听
     */
    public abstract void requestPost(String baseUrl,
                                     Map<String, Object> params,
                                     OnHttpRequestListener listener);


    /**
     * POST请求
     *
     * @param baseUrl 请求地址
     * @param params 请求参数
     * @param headers 头部信息串
     * @param listener 请求结果监听
     */
    public abstract void requestPost(String baseUrl,
                                     Map<String,Object> params,
                                     Map<String, String> headers,
                                     OnHttpRequestListener listener);

    /**
     * POST请求
     *
     * @param baseUrl 请求地址
     * @param jsonParam 请求参数（json）
     * @param listener 请求结果监听
     */
    public abstract void requestPost(String baseUrl,
                                     JSONObject jsonParam,
                                     OnHttpRequestListener listener);
}
